import request from '@/config/axios'

// 报名学生 VO
export interface StudentVO {
  id: string // 主键
  stage: string // 主流程状态
  accountId: number // 账号ID
  studentName: string // 学生姓名
  recruitType: string // 报名类型
  phone: string // 手机号码
  batchId: string // 计划ID
  stageId: string // 阶段ID
  recruitStatus: string // 报名状态
  recruitTime: Date // 报名时间
  interviewQuality: string // 面试资格
  interviewSelected: boolean // 是否分配面试时间
  interviewDate: Date // 选择面试日期
  interviewTime: string // 选择面试时间段
  interviewStatus: string // 面试状态
  interviewId: string // 面试ID
  interviewGroupId: string // 面试分组ID
  interviewSlotId: number // 面试槽位ID
  interviewSlotTime: string // 面试时间
  interviewScore: number // 面试平均分
  chioceStatus: string // 双选状态
  chioceMentorId: number // 双选选择导师ID
  chioceMentorName: number // 双选选择导师
  birthdate: Date // 出生日期
  gender: string // 性别
  politicalStatus: string // 政治面貌
  ethnic: string // 民族
  identityNumber: string // 身份证号
  contactAddress: string // 通讯
  email: string // 联系邮件
  university: string // 所在学校、院系
  is985: boolean // 是否985
  is211: boolean // 是否211
  isFirstClass: boolean // 是否双一流
  studyMajor: string // 学习专业
  applyMajor: string // 申请专业
  majorRank: number // 专业排名
  majorTotal: number // 专业总人数
  classRank: number // 班级名次
  classTotal: number // 班级总人数
  cet4Score: number // 四级成绩
  cet6Score: number // 六级成绩
  attachment: string // 证明材料
  remark: string // 备注
}

export interface RecruitStudentBatchInterviewReqVO {
  interviewQuality: string // 面试资格
  recruitStudentIds: string[] // 报名学生主键
}

export interface RecruitStudentMessageReqVO {
  message: string // 短信内容
  method: string[] // 发送方式
  ids: string[] // 报名单主键
}

export interface RecruitStudentGroupingListRespVO extends StudentVO {
  groupName: string // 分组名称
}

export interface RecruitStudentBatchInterviewResultReqVO {
  interviewStatus: string // 面试状态(就是面试结果)
  recruitStudentIds: string[] // 报名学生主键
}

export interface RecruitStudentChoiceListRespVO extends StudentVO {
  mentorName: string // 双选选择导师
  confirmJudges: string // 面试成绩确认评委
}

// 报名学生 API
export const StudentApi = {
  // 查询报名学生分页
  getStudentPage: async (params: any) => {
    return await request.get({ url: `/recruit/student/page`, params })
  },

  // 查询报名学生详情
  getStudent: async (id: string) => {
    return await request.get({ url: `/recruit/student/get?id=` + id })
  },

  // 新增报名学生
  createStudent: async (data: StudentVO) => {
    return await request.post({ url: `/recruit/student/create`, data })
  },

  // 修改报名学生
  updateStudent: async (data: StudentVO) => {
    return await request.put({ url: `/recruit/student/update`, data })
  },

  // 删除报名学生
  deleteStudent: async (id: string) => {
    return await request.delete({ url: `/recruit/student/delete?id=` + id })
  },

  // 导出报名学生 Excel
  exportStudent: async (params) => {
    return await request.download({ url: `/recruit/student/export-excel`, params })
  },

  // 批量设置面试资格
  batchSetInterview: async (data: RecruitStudentBatchInterviewReqVO) => {
    return await request.put({ url: `/recruit/student/batch-interview`, data })
  },

  // 异步发送短信
  sendSmsMessage: async (data: RecruitStudentMessageReqVO) => {
    return await request.post({ url: `/recruit/student/send-message`, data })
  },

  // 获得指定面试分组下的报名学生列表
  getStudentByGroupId: async (groupId: string) => {
    return await request.get({ url: `/recruit/student/in-group?groupId=${groupId}` })
  },

  // 获取学生列表(给学生分组第一步使用)带有分组信息
  getStudentGroupingList: async (params: any) => {
    return await request.get({ url: `/recruit/student/grouping-list`, params })
  },

  // 导出报名学生列表
  exportStudentGroupingList: async (params) => {
    return await request.download({ url: `/recruit/student/grouping-list-export`, params })
  },

  // 解除面试时间
  cancelInterviewTime: async (id: string) => {
    return await request.put({ url: `/recruit/student/cancel-interview?id=${id}` })
  },

  // 批量设置面试状态(结果)
  batchSetInterviewResult: async (data: RecruitStudentBatchInterviewResultReqVO) => {
    return await request.put({ url: `/recruit/student/batch-interview-result`, data })
  },

  // 获取双选情况分页
  getStudentChoicePage: async (params: any) => {
    return await request.get({ url: `/recruit/student/choice-list`, params })
  }
}
